package com.itx.gatewayx.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 新闻实体类
 *
 * @author itx
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("news")
public class News implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 新闻ID (暂时使用普通字段，不作为主键，等待数据库表添加此字段)
     */
    @TableId(value = "uniquekey", type = IdType.INPUT)
    private String uniquekey;

    /**
     * 新闻标题
     */
    private String title;

    /**
     * 新闻内容
     */
    @TableField("content")
    private String content;

    /**
     * 新闻摘要
     */
    @TableField("summary")
    private String summary;

    /**
     * 封面图片URL
     */
    @TableField("cover_img")
    private String coverImg;

    /**
     * 分类ID
     */
    @TableField("category_id")
    private String categoryId;

    /**
     * 作者ID
     */
    @TableField("author_id")
    private Long authorId;

    /**
     * 浏览量
     */
    @TableField("views")
    private Integer views;

    /**
     * 点赞数
     */
    @TableField("likes")
    private Integer likes;

    /**
     * 评论数
     */
    @TableField("comments")
    private Integer comments;

    /**
     * 发布时间
     */
    @TableField("publish_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date publishTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 状态: 0-草稿, 1-已发布, 2-已下架
     */
    @TableField("status")
    private Integer status;

    /**
     * 删除标志: 0-未删除, 1-已删除
     */
    @TableField("del_flag")
    @TableLogic(value = "0", delval = "1")
    @JsonIgnore
    private Integer delFlag;
    
    /**
     * 分类名称（非数据库字段）
     */
    @TableField(exist = false)
    private String categoryName;
    
    /**
     * 作者名称（非数据库字段）
     */
    @TableField(exist = false)
    private String author;
    
    /**
     * 作者头像（非数据库字段）
     */
    @TableField(exist = false)
    private String authorAvatar;
    
    /**
     * 标签列表（非数据库字段）
     */
    @TableField(exist = false)
    private List<String> tags;
    
    /**
     * 当前用户是否点赞（非数据库字段）
     */
    @TableField(exist = false)
    private Boolean isLiked;
    
    /**
     * 当前用户是否收藏（非数据库字段）
     */
    @TableField(exist = false)
    private Boolean isFavorite;

    /**
     * 日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date date;

    /**
     * 分类
     */
    private String category;

    /**
     * 作者名称
     */
    @TableField("author_name")
    private String authorName;

    /**
     * 新闻URL
     */
    private String url;

    /**
     * 缩略图URL
     */
    @TableField("thumbnail_pic_s")
    private String thumbnailPicS;

    /**
     * 缩略图URL 02
     */
    @TableField("thumbnail_pic_s02")
    private String thumbnailPicS02;

    /**
     * 缩略图URL 03
     */
    @TableField("thumbnail_pic_s03")
    private String thumbnailPicS03;

    /**
     * 是否为内容
     */
    @TableField("is_content")
    private String isContent;

    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
} 